1. Field of the Invention
The present invention relates to on-screen display systems for television display systems.
2. Description of the Prior Art
Current television display systems require some sort of textual on-screen display (OSD) system, for displaying means and closed captioning, for example. High-end television display systems sometimes employ advanced bit-mapped graphic displays for display purposes. However, most television display systems still rely on character-per-cell based graphic displays. Because of cost constraints, most such OSD display systems use a single read/write memory (RAM) buffer. Each RAM buffer is large enough to hold one row of text characters to be displayed across the screen. Codes representing characters to be displayed are stored in the RAM buffer. For example, a processor resident within the television system may store character codes in the RAM buffer representing a menu for interaction with the viewer; or closed captioning circuitry may extract closed captioning information from the received television signal and store character codes in the RAM buffer representing that closed captioning information for display with the received television image.
An OSD generator counts video lines in the current field of the received television video signal, and then operates to display the characters contained in the RAM buffer when the video lines on which those characters are to be displayed are being scanned. At that point, the OSD generator retrieves the character codes from the RAM buffer and generates a signal representing the image of those characters. The picture elements (pixels) making up the OSD characters are looked up in a character read-only memory (ROM) by using the character code read from the RAM buffer, and the video line and pixel locations currently being scanned, to address the character ROM. The circuitry to retrieve character codes from the RAM buffer and to generate the OSD image representative signal is normally synchronized to the received television signal in some manner. The image representative signal thus generated may replace or overlay the received television image. The form of OSD generator described above is termed a serial mode OSD generator. In an alternative embodiment of a serial mode OSD, two RAM buffers are operated as pingpong buffers. One RAM buffer is updated as described above while the OSD generator retrieves data from the other.
In known serial mode OSD generator systems, the RAM buffer normally consists of one byte (i.e. eight bits) per character, allowing for 256 possible characters. However, because the displayed characters are required to be displayed in different colors, and with underlining, italics, etc. (termed attributes) for closed captioning and/or menuing systems, fewer than 256 characters are possible. Each byte in the RAM buffer may contain either display character data or attribute data. The most significant bit (MSB) is used to define whether the remaining seven least significant bits are a display character or attributes (color changes). If the MSB is, for example, a logic `1`, the data in this byte specifies a display character. Consequently, it is possible to specify up to 127 display characters.
If the MSB is a logic `1`, the data in this byte specifies attributes. An attribute byte specifies either a foreground or background color or another display attribute such as underlining, flashing, italics, etc. Foreground and background colors may either be specified by including respective values of red, green and blue (RGB) color components for the specified color in the attribute byte, or by including an index into a palette table, or possibly into one palette table for foreground colors and another for background colors. The palette table contains entries each specifying a color by including values of respective RGB color component values. When an attribute change occurs (i.e. an attribute type is retrieved from the RAM buffer), a blank space (usually in the current background color) is generated on the display.
A serial mode OSD generator system provides compact memory usage. However, it is impossible to simply change a character's attributes (foreground/background color, etc.) for all the characters in a line of text. In addition, because a blank space is displayed when an attribute change is required, the design of the user interface is greatly inhibited.
One potential way around this problem is to represent every OSD character by 2 sequential bytes in the RAM buffer with a first byte specifying the display character and a second byte specifying that character's attributes. In such a system, when OSD information is written into the RAM buffer, both the display character and it's attributes are written into the memory sequentially. That is, the processor or closed caption circuitry must write two bytes into the RAM buffer for each character to be displayed. The OSD generator, in turn, sequentially retrieves the display character byte and then it's corresponding attribute byte, and generates a signal representing the image of the display character having those attributes. While feasible, this is not ideal from a software standpoint. The software storing the OSD information must continually write both the display character byte and the attribute byte. However, attributes don't change very often, so writing attribute bytes for each display character represents unnecessary processing which must be performed by this software.
Another approach to the problem of generation of characters and their corresponding attributes is described by Edgard, et al. in EP-A-0 395 916 entitled SEPARATE FONT AND ATTRIBUTE DISPLAY SYSTEM which was published Nov. 7, 1990. Edgard, et al. describe a computer system using separate font and attribute buffers. This system, however, is relatively complex and employs different processing depending on whether application programs or sub-routines provided by the computer manufacturer are being executed. For example, during subroutine execution, information stored in registers is written to the attribute buffers when mask information is written to the font buffer. During application program execution, the attribute value is written to a foreground attribute buffer and zero is written to a background buffer while an OR'ed value of the attribute value is written to the font buffer. In subroutine read operations, the value in the font buffer may be obtained or a CRC value may be generated on the entire character cell. The CRC value can be compared with similar CRC values developed on the character mask of interest to determine if a character is present in the cell. During execution of read operations in application programs, the value in the foreground or background buffer is selected based on the value in the font buffer.
A further example of use of separate attribute and character memories is described by Borg, et al. in U.S. Pat. No. 4,626,479 entitled TERMINAL WITH MEMORY WRITE PROTECTION which issued Dec. 9, 1986. In this system, attribute information stored in a RAM separate from character data is utilized for write protection in micro-processor controlled video display terminal. Specifically, unused attribute bits stored in the attribute memory are used to represent a protected field in a character RAM for a given location or address on the video display and are read from the attribute RAM by the microprocessor for restricting access to the character RAM thus providing write protection for selected portions of the video display.
Another example of attribute processing is described by Luck, et al., in EP-A-0 149 780 entitled ATTRIBUTE HIERARCHY SYSTEM which was published Jul. 31, 1985. The Luck et al. system includes a plurality of stacks for storing data and attributes wherein only the top of the stack is loaded and utilized. The system includes an attribute memory and a character data storage, a character data counter and a position register. An attribute mask and attribute processor control loading of the attributes. A command register pushes, pops or loads to the stacks along with a sequence controller input from the attribute processor. A command decoder determines sequence of operations for loading attributes and characters into row buffers. A stack control flags when a valid load has occurred, and if no load occurred, the stack defaults and copy operation occurs.
It is herein recognized that a need exists for processing character and attribute information in a simplified manner while facilitating more sophisticated on-screen displays as described later. The present invention is directed to meeting those needs.
The principles of the invention have application to OSD systems of a type comprising a character buffer (22) containing a plurality of entries, each entry specifying one of a predetermined plurality of display characters; an attribute buffer (24) containing a plurality of entries respectively corresponding to the plurality of entries in the display character buffer, each entry specifying an attribute of the corresponding display character; and control circuitry (30,50) for substantially simultaneously retrieving corresponding entries from the character and attribute buffers and generating a signal representing the image of the display character specified in the retrieved display character entry having the attribute specified in the retrieved attribute entry.